Міністерство освіти і науки УкраїниНаціональний технічний університет України
«Київський політехнічний інститут ім. І. Сікорського»
Кафедра автоматизації проектування енергетичних процесів і систем
Лабораторна робота №6
з дисципліни «Операційні системи»
«Система команд. Арифметичні команди. Обчислення цілочисельних арифметичних виразів з використанням команд MUL, IMUL, DIV, IDIV, ADD, ADC, INC, SUB, SBB, DEC, NEG, CBW, CWD»
Варіант - 15
Мета роботи: програмування блоку обчислення арифметичних виразів на прикладі реалізації математичних формул з використанням арифметичних уоманд асемблера за індивідуальними завданнями.
Завдання на виконання:
Підготуйте і налагодьте програму для обчислення простих формул за зразком. Продемонструйте роботу програми під керуванням налагоджувача, прокоментуйте вміст обчислюваних змінних.
Завдання за варіантом 15:
Z = (c*d + 23) / (a/2 - 4*d - 1)
Теоретична частина:
Команди переміщення даних
MOVe operand Пересилання операнда
MOVe operand to/from system registers Пересилання операнда у системні регістри (або з них). Схема команди: MOV приймальник, джерело
Призначення: пересилання даних між регістрами або регістрами та пам’яттю. Команда має обмеження:
копіювання здійснюється з другого операнда у перший;
значення другого операнда не змінююється;
обидва оператора не можуть бути з пам’яті;
лише один з операндів може бути сегментним, приймальником не може бути регістр CS; не можна пересилати сегментні регістри:
MOV ES, DS
Треба розписати:
MOV AX, DS
MOV ES, AX
не можна напряму ініціалізувати сегмент даних, треба розписувати:
MOV AX, DSEG
MOV DS, AX
довжина обох операндів повинна бути однаковою.
Команда Mov має розширену можливість: для випадку, коли довжина операндів різна використовується директива заначення типу:
Тип PTR вираз
Оператор PTR може використовуватися з елементами даних, мітками інструкцій. Він використовує специфікатори типів Byte, Word, Dword, Tbyte для явного зазначення типу DB, DW, DD, DQ, DT для змінних. Він також використовує специфікатори типів NEAR, FAR, PROC для явного зазначення відстані до мітки перреходу. Таким чином, тип – це специфікатор типу,наприклад, BYTE, а вираз – це змінна або константа.
Арифиметичні команди
Команда складання ADD
Синтаксис: ADD приймальник, джерело
Символьний код: ADD регістр/пам’ять, регістр/пам’ять/безпосереднє значення
Призначення: складання двох операндів джерела та приймальника розмірністю байт, слово або подвійне слово, записати результат складання за адресою першого операнда, встановити прапорці.
Ця операція є коректною при використанні операндів: регістр-регістр, регістр-пам’ять, пам’ять-пам’ять, пам’ять-безпосереднє значення. Виконання команди додавання впливає на стан прапорців:
CF (Carry)– перенесення (зі старшого знакового розряду; наприклад, для байта в 9-му розряді при виконанні команди додавання з’явилася 1), PF (Parity)– парність, AF (Auxiliary)- допоміжне перенесення, ZF (Zero)– нуль, SF (Sign)– мінус, OF (Overflow)– переповнювання.
Команда ADD використовується для складання двох цілочисельних операндів. Якщо результат складання виходить за межі першого операнда (виникає переповнювання), то врахувати цю ситуацію слід шляхом аналізу прапорця CF і подальшого можливого застосування команди ADC. Наприклад, складемо значення в регістрі АХ і області пам'яті CHН. При складанні слід врахувати можливість переповнювання.
ADD AX, CHH ; додати значення з області з пам’яті CHH до регістру AX
ADD AX. CH ; додати регістр до регістра, результат записувала в АХ
ADD EBX, DBLWORD ;додати подвійне слово з пам’яті до регістру
ADD BL, 10 ; додати 10 до молодшої частини регістра BX
Команда складання двох операндів з урахуванням перенесенням з молодшого розряда ADC
Синтаксис: ADС приймальник, джерело.
Символьний код: ADС регістр/пам’ять, регістр/пам’ять/безпосереднє значення
Впливає на прапорці AF, CF, OF, PF, SF, ZF
Результат заноситься у перший операнд, в залежності від результату встановлюються прапорці.
Логіка роботи команди: <прий...